#! /bin/bash

# 启动时查看是否已经启动，防止重复启动
# 注：此种方法是模糊搜索 如：搜索fcitx时 如果有fcitx5会认为有
function run_no_restart_app(){
    echo "[INFO] --- run_no_restart_app ---"
    searchWord=$1
    echo "[INFO] run_no_restart_app "$searchWord
    # 获取全部的相关的程序信息
    # ps -aux|grep "$searchWord" | grep -v grep
    # 获取全部的相关程序的进程号
    pids=$(ps -ef | grep "$searchWord" | grep -v grep  | awk '{print $2}')
    # 注：此种方法是模糊搜索
    if [ $pids ]; then
        # 有相关进程，则不做其他操作
        # echo "[INFO] 已启动"$searchWord
        echo "[INFO] 模糊查询匹配查到关键字"$searchWord"程序进程"
    else
        # 无相关进程，则启动执行启动
        # 判断是否有第二个参数，如果有则把第二个参数当作执行命令，没有则把第一个参数当执行命令
        if [ "$2" ];then
            echo "[INFO] 有第二个参数"
            startappCmd=$2
            echo "[Debug] param2="${startappCmd};
        else
            startappCmd=$1
        fi
        # 建立软链接命令拼接： cmdStr="ln -s  "${dir}"/scripts "${HOME}"/.dwm"
        # 启动后台运行命令拼接
        cmdStr=$startappCmd
        echo "[INFO] 执行命令: ${cmdStr} 启动相关程序"
        # 后台执行
        ${cmdStr} &
        # ${cmdStr} >> /dev/null 2>&1
    fi
}

# 启动时查看是否已经启动，若已启动则杀死后重启
function restart_app(){
    echo "[INFO] --- restart_app ---"
    searchWord=$1
    echo "[INFO] restart_app "$searchWord
    # 获取全部的相关的程序信息
    # ps -aux|grep "$searchWord" | grep -v grep
    # ps -aux|grep "dwm-status.sh" | grep -v grep

    # 获取全部的相关程序的进程号
    pids=$(ps -ef | grep "$searchWord" | grep -v grep  | awk '{print $2}')
    if [ $pids ]; then
        # 有相关进程，则不做其他操作
        echo "[INFO] 模糊查询匹配查到关键字"$searchWord"程序进程"
        # 判断查询结果
        # 循环一个个关闭
        for pid in $pids
        do
            echo  $pid
            kill -9  $pid
        done
    else
        echo "[INFO] 未启动"$searchWord
    fi

    # 判断是否有第二个参数，如果有则把第二个参数当作执行命令，没有则把第一个参数当执行命令
    if [ "$2" ];then
        echo "[INFO] 有第二个参数"
        startappCmd=$2
        echo "[INFO] startappCmd="${startappCmd};
    else
        startappCmd=$1
    fi

    # 执行启动命令
    # 建立软链接命令拼接： cmdStr="ln -s  "${dir}"/scripts "${HOME}"/.dwm"
    # 启动后台运行命令拼接
    cmdStr=$startappCmd
    echo "[INFO] 执行命令: ${cmdStr} 启动相关程序"
    # 后台执行
    ${cmdStr} &
    # ${cmdStr} >> /dev/null 2>&1
    
}

settings() {
    # 延迟几秒
    [ $1 ] && sleep $1
    
    # xset s 600
    # xset -b
    # syndaemon -i 1 -t -K -R -d
    # xss-lock -- ~/.dwm/scripts/app-starter.sh blurlock &
    # 设置屏幕分辨率
    # ~/.dwm/scripts/set-screen.sh &

    # 设置壁纸
    # 随机选择文件夹下的一张图片作为壁纸 
    # feh --recursive --randomize --bg-fill ~/Pictures/wallpapers/*.jpg
    ~/.dwm/scripts/set-wallpaper.sh &

    # 更新一次状态栏
    ~/.dwm/scripts/dwm-status.sh &

}

daemons() {
    # 延迟几秒
    [ $1 ] && sleep $1

    # 状态栏内容定时自动更新
    # norestart_app "picom" "picom  --config "$HOME"/.dwm/scripts/config/picom.conf >> /dev/null 2>&1";
    # norestart_app "picom" "picom  --config "$HOME"/.dwm/scripts/config/picom.conf";
    # restart_app "/bin/sh "$HOME"/.dwm/scripts/dwm-status-autoupdate.sh";
    # restart_app "/bin/sh "$HOME"/.dwm/scripts/set-wallpaper-autochange.sh";
    
    # restart_app 'xautolock' 'xautolock -time 10 -locker  '"$HOME/.dwm/scripts/app-starter.sh blurlock"'
    # restart_app "xautolock" "xautolock -time 10 -locker  "$HOME"/.dwm/scripts/i3lock-get-screen-image-fancy.sh"   
    restart_app "xautolock" 'xautolock -time 10 -locker  "~/.dwm/scripts/app-starter.sh blurlock"'
}

# settings 1 
daemons 3 